package com.atguigu.spring.beans;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
/*
        //创建Helloworld的一个对象
        HelloWorld helloWorld = new HelloWorld();
        //为name属性赋值
        helloWorld.setName2("atguigu");
        //调用hello方法
        helloWorld.hello();
*/


        //1. 创建Spring的IOC容器对象
        // 创建容器时会通过反射调用无参构造函数对配置文件中的bean进行初始化，同时会调用set方法进行赋值
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2. 从IOC容器中获取Bean实例
        //利用id定位到IOC容器中的bean
        HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
        //利用类型返回IOC容器中的Bean，但要求IOC容器中必须只有一个该类型的Bean
        HelloWorld helloWorld1 = ctx.getBean(HelloWorld.class);
        //3. 调用hello方法
        helloWorld.hello();

        Car car= (Car) ctx.getBean("car");
        Car car2= (Car) ctx.getBean("car2");
        System.out.println(car);
        System.out.println(car2);

        Person person= (Person) ctx.getBean("person");
        System.out.println(person);

        Person person2= (Person) ctx.getBean("person2");
        System.out.println("person2: "+person2);
    }
}
